package cn.iocoder.yudao.module.reading.enums;

import cn.iocoder.yudao.framework.common.exception.ErrorCode;

/**
 * Reading 错误码枚举类
 * 
 * reading 系统，使用 1-100-000-000 段
 */
public interface ErrorCodeConstants {

    // ========== 用户管理 1-100-001-000 ==========
    ErrorCode USER_NOT_EXISTS = new ErrorCode(1_100_001_000, "用户不存在");
    ErrorCode USER_SETTINGS_NOT_EXISTS = new ErrorCode(1_100_001_001, "用户设置不存在");
    ErrorCode USER_PASSWORD_INCORRECT = new ErrorCode(1_100_001_002, "密码错误");
    ErrorCode USER_PASSWORD_NOT_MATCH = new ErrorCode(1_100_001_003, "两次输入的密码不一致");
    ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_100_001_004, "用户名已存在");
    ErrorCode USER_PHONE_EXISTS = new ErrorCode(1_100_001_005, "手机号已存在");
    ErrorCode USER_ACCOUNT_LOCKED = new ErrorCode(1_100_001_006, "账户已被锁定，请稍后再试");
    ErrorCode USER_ACCOUNT_DISABLED = new ErrorCode(1_100_001_007, "账户已被禁用");
    ErrorCode USER_LOGIN_FAILURE_LIMIT_EXCEEDED = new ErrorCode(1_100_001_008, "登录失败次数过多，账户已被锁定");

    // ========== 绘本分类 1-100-002-000 ==========
    ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(1_100_002_000, "绘本分类不存在");
    ErrorCode CATEGORY_NAME_DUPLICATE = new ErrorCode(1_100_002_001, "分类名称已存在");

    // ========== 绘本集 1-100-003-000 ==========
    ErrorCode BOOK_SET_NOT_EXISTS = new ErrorCode(1_100_003_000, "绘本集不存在");
    ErrorCode BOOK_SET_TITLE_DUPLICATE = new ErrorCode(1_100_003_001, "绘本集标题已存在");

    // ========== 绘本 1-100-004-000 ==========
    ErrorCode PICTURE_BOOK_NOT_EXISTS = new ErrorCode(1_100_004_000, "绘本不存在");
    ErrorCode PICTURE_BOOK_TITLE_DUPLICATE = new ErrorCode(1_100_004_001, "绘本标题已存在");

    // ========== 绘本页面 1-100-005-000 ==========
    ErrorCode BOOK_PAGE_NOT_EXISTS = new ErrorCode(1_100_005_000, "绘本页面不存在");
    ErrorCode BOOK_PAGE_NUMBER_DUPLICATE = new ErrorCode(1_100_005_001, "页码已存在");

    // ========== 阅读计划 1-100-006-000 ==========
    ErrorCode READING_PLAN_NOT_EXISTS = new ErrorCode(1_100_006_000, "阅读计划不存在");
    ErrorCode READING_PLAN_NAME_DUPLICATE = new ErrorCode(1_100_006_001, "计划名称已存在");
    ErrorCode READING_PLAN_ALREADY_STARTED = new ErrorCode(1_100_006_002, "计划已开始，无法修改");

    // ========== 计划任务 1-100-007-000 ==========
    ErrorCode PLAN_TASK_NOT_EXISTS = new ErrorCode(1_100_007_000, "计划任务不存在");
    ErrorCode PLAN_TASK_ALREADY_COMPLETED = new ErrorCode(1_100_007_001, "任务已完成");

    // ========== 阅读记录 1-100-008-000 ==========
    ErrorCode READING_RECORD_NOT_EXISTS = new ErrorCode(1_100_008_000, "阅读记录不存在");
    ErrorCode READING_RECORD_ALREADY_EXISTS = new ErrorCode(1_100_008_001, "阅读记录已存在");

    // ========== 音频资源 1-100-009-000 ==========
    ErrorCode AUDIO_RESOURCE_NOT_EXISTS = new ErrorCode(1_100_009_000, "音频资源不存在");
    ErrorCode AUDIO_RESOURCE_TITLE_DUPLICATE = new ErrorCode(1_100_009_001, "音频标题已存在");
    ErrorCode BOOK_NOT_BELONG_TO_BOOK_SET = new ErrorCode(1_100_009_002, "绘本不属于指定的绘本集");
    ErrorCode AUDIO_MUST_BIND_TO_BOOK = new ErrorCode(1_100_009_003, "音频必须绑定到具体的绘本");

    // ========== 用户收藏 1-100-010-000 ==========
    ErrorCode USER_FAVORITE_NOT_EXISTS = new ErrorCode(1_100_010_000, "收藏记录不存在");
    ErrorCode USER_FAVORITE_ALREADY_EXISTS = new ErrorCode(1_100_010_001, "已收藏该内容");
    ErrorCode FAVORITE_NOT_EXISTS = new ErrorCode(1_100_010_002, "收藏记录不存在");
    ErrorCode FAVORITE_ALREADY_EXISTS = new ErrorCode(1_100_010_003, "已收藏该内容");
    ErrorCode FAVORITE_TYPE_INVALID = new ErrorCode(1_100_010_004, "收藏类型无效");

    // ========== 推荐专区 1-100-011-000 ==========
    ErrorCode RECOMMENDATION_ZONE_NOT_EXISTS = new ErrorCode(1_100_011_000, "推荐专区不存在");
    ErrorCode RECOMMENDATION_ZONE_TYPE_DUPLICATE = new ErrorCode(1_100_011_001, "专区类型已存在");

    // ========== 学习打卡 1-100-012-000 ==========
    ErrorCode PUNCH_RECORD_NOT_EXISTS = new ErrorCode(1_100_012_000, "打卡记录不存在");
    ErrorCode PUNCH_RECORD_ALREADY_EXISTS = new ErrorCode(1_100_012_001, "今日已打卡");
    ErrorCode PUNCH_RECORD_NO_READING_TODAY = new ErrorCode(1_100_012_002, "今日未阅读，无法打卡");

    // ========== 用户关注 1-100-013-000 ==========
    ErrorCode USER_FOLLOW_NOT_EXISTS = new ErrorCode(1_100_013_000, "关注关系不存在");
    ErrorCode USER_FOLLOW_ALREADY_EXISTS = new ErrorCode(1_100_013_001, "已关注该用户");
    ErrorCode USER_FOLLOW_SELF = new ErrorCode(1_100_013_002, "不能关注自己");

    // ========== 用户配音 1-100-014-000 ==========
    ErrorCode USER_RECORDING_NOT_EXISTS = new ErrorCode(1_100_014_000, "配音记录不存在");
    ErrorCode USER_RECORDING_ALREADY_EXISTS = new ErrorCode(1_100_014_001, "该页面已有配音记录");
    ErrorCode RECORDING_FILE_EMPTY = new ErrorCode(1_100_014_002, "录音文件不能为空");
    ErrorCode RECORDING_FILE_TOO_LARGE = new ErrorCode(1_100_014_003, "录音文件过大，最大支持10MB");
    ErrorCode RECORDING_FILE_INVALID = new ErrorCode(1_100_014_004, "录音文件无效");
    ErrorCode RECORDING_FILE_TYPE_INVALID = new ErrorCode(1_100_014_005, "录音文件格式不支持，仅支持mp3、wav、m4a格式");
    ErrorCode RECORDING_UPLOAD_FAILED = new ErrorCode(1_100_014_006, "录音上传失败");
    ErrorCode RECORDING_DURATION_INVALID = new ErrorCode(1_100_014_007, "录音时长无效，必须在1-300秒之间");
    ErrorCode USER_RECORDING_NOT_SHAREABLE = new ErrorCode(1_100_014_008, "配音记录不可分享，请先设置为公开");

    // ========== 用户统计 1-100-015-000 ==========
    ErrorCode USER_STATS_NOT_EXISTS = new ErrorCode(1_100_015_000, "用户统计不存在");

    // ========== 个人资料 1-100-016-000 ==========
    ErrorCode PHONE_ALREADY_EXISTS = new ErrorCode(1_100_016_000, "手机号已存在");
    ErrorCode EMAIL_ALREADY_EXISTS = new ErrorCode(1_100_016_001, "邮箱已存在");
    ErrorCode AVATAR_FILE_EMPTY = new ErrorCode(1_100_016_002, "头像文件不能为空");
    ErrorCode AVATAR_FILE_TOO_LARGE = new ErrorCode(1_100_016_003, "头像文件过大，最大支持2MB");
    ErrorCode AVATAR_FILE_INVALID = new ErrorCode(1_100_016_004, "头像文件无效");
    ErrorCode AVATAR_FILE_TYPE_INVALID = new ErrorCode(1_100_016_005, "头像文件格式不支持，仅支持jpg、png、gif格式");
    ErrorCode AVATAR_UPLOAD_FAILED = new ErrorCode(1_100_016_006, "头像上传失败");

    // ========== 回收站 1-100-017-000 ==========
    ErrorCode RECYCLE_BIN_ITEM_NOT_EXISTS = new ErrorCode(1_100_017_000, "回收站项目不存在");
    ErrorCode RECYCLE_BIN_RESTORE_FAILED = new ErrorCode(1_100_017_001, "还原失败，原始数据已损坏");
    ErrorCode RECYCLE_BIN_DELETE_FAILED = new ErrorCode(1_100_017_002, "彻底删除失败");

    // ========== 班级管理 1-100-018-000 ==========
    ErrorCode CLASS_NOT_EXISTS = new ErrorCode(1_100_018_000, "班级不存在");
    ErrorCode CLASS_CODE_INVALID = new ErrorCode(1_100_018_001, "班级口令无效");
    ErrorCode CLASS_LOCKED = new ErrorCode(1_100_018_002, "班级已锁定，无法加入");
    ErrorCode CLASS_NO_PERMISSION = new ErrorCode(1_100_018_003, "无权限操作该班级");
    ErrorCode CLASS_MEMBER_NOT_EXISTS = new ErrorCode(1_100_018_004, "不是班级成员");
    ErrorCode CLASS_MEMBER_ALREADY_EXISTS = new ErrorCode(1_100_018_005, "已是班级成员");
    ErrorCode CLASS_CANNOT_REMOVE_SELF = new ErrorCode(1_100_018_006, "不能移除自己");

    // ========== 班级作业 1-100-019-000 ==========
    ErrorCode ASSIGNMENT_NOT_EXISTS = new ErrorCode(1_100_019_000, "作业不存在");
    ErrorCode ASSIGNMENT_NO_PERMISSION = new ErrorCode(1_100_019_001, "无权限操作该作业");
    ErrorCode ASSIGNMENT_ALREADY_COMPLETED = new ErrorCode(1_100_019_002, "作业已完成");
    ErrorCode ASSIGNMENT_BOOK_NOT_EXISTS = new ErrorCode(1_100_019_003, "作业绘本不存在");

    // ========== 认证与Token管理 1-100-020-000 ==========
    ErrorCode TOKEN_INVALID = new ErrorCode(1_100_020_000, "Token无效");
    ErrorCode TOKEN_EXPIRED = new ErrorCode(1_100_020_001, "Token已过期");
    ErrorCode TOKEN_BLACKLISTED = new ErrorCode(1_100_020_002, "Token已被拉黑");
    ErrorCode TOKEN_GENERATE_FAILED = new ErrorCode(1_100_020_003, "Token生成失败");
    ErrorCode TOKEN_REFRESH_FAILED = new ErrorCode(1_100_020_004, "Token刷新失败");
    ErrorCode REFRESH_TOKEN_INVALID = new ErrorCode(1_100_020_005, "刷新Token无效");
    ErrorCode REFRESH_TOKEN_EXPIRED = new ErrorCode(1_100_020_006, "刷新Token已过期");
    
    // ========== 微信登录 1-100-021-000 ==========
    ErrorCode WECHAT_AUTH_FAILED = new ErrorCode(1_100_021_000, "微信授权失败");
    ErrorCode WECHAT_CODE_INVALID = new ErrorCode(1_100_021_001, "微信授权码无效");
    ErrorCode WECHAT_DECRYPT_FAILED = new ErrorCode(1_100_021_002, "微信用户数据解密失败");
    ErrorCode WECHAT_USER_INFO_INVALID = new ErrorCode(1_100_021_003, "微信用户信息无效");
    ErrorCode WECHAT_BIND_FAILED = new ErrorCode(1_100_021_004, "微信账号绑定失败");

    // ========== 社区功能 1-100-022-000 ==========
    ErrorCode COMMUNITY_POST_NOT_EXISTS = new ErrorCode(1_100_022_000, "帖子不存在");
    ErrorCode COMMUNITY_POST_PERMISSION_DENIED = new ErrorCode(1_100_022_001, "无权限操作该帖子");
    ErrorCode COMMUNITY_COMMENT_NOT_EXISTS = new ErrorCode(1_100_022_002, "评论不存在");
    ErrorCode COMMUNITY_COMMENT_PERMISSION_DENIED = new ErrorCode(1_100_022_003, "无权限操作该评论");
    ErrorCode COMMUNITY_DRAFT_NOT_EXISTS = new ErrorCode(1_100_022_004, "草稿不存在");
    ErrorCode COMMUNITY_POST_LIMIT_EXCEEDED = new ErrorCode(1_100_022_005, "今日发帖次数已达上限");
    ErrorCode COMMUNITY_COMMENT_LIMIT_EXCEEDED = new ErrorCode(1_100_022_006, "评论过于频繁，请稍后再试");

    // ========== 内容安全检查 1-100-023-000 ==========
    ErrorCode COMMUNITY_SENSITIVE_CHECK_FAILED = new ErrorCode(1_100_023_000, "内容安全检查失败：{}");
    ErrorCode COMMUNITY_SENSITIVE_CHECK_BUSY = new ErrorCode(1_100_023_001, "内容安全检查系统繁忙，请稍后重试");
    ErrorCode COMMUNITY_WX_CONFIG_ERROR = new ErrorCode(1_100_023_002, "微信配置错误，请联系管理员");
    ErrorCode COMMUNITY_IMAGE_CHECK_FAILED = new ErrorCode(1_100_023_003, "图片安全检查失败：{}");
    ErrorCode COMMUNITY_IMAGE_DOWNLOAD_FAILED = new ErrorCode(1_100_023_004, "下载图片失败：{}");
    ErrorCode COMMUNITY_CONTENT_CONTAINS_SENSITIVE = new ErrorCode(1_100_023_005, "内容包含敏感词，请修改后重试");

}
